class Prestamo < ActiveRecord::Base
  belongs_to :usuario
  validates_presence_of :fecha, :usuario_id, :tasa
  validates_numericality_of :total,:greater_than => 0
  has_many :movimientos, :dependent => :destroy

  #Para el ajaxpopup
  attr_writer :usuario_nombre
  delegate :nombre, :to => :usuario, :prefix => true, :allow_nil => true

  after_create :generar_movimientos

  attr_accessor :no_generar

  def generar_movimientos
    unless self.no_generar
      cuota =  calcular_cuota
      self.cuotas.times do |i|
        movimiento = Movimiento.new
        movimiento.usuario = self.usuario
        movimiento.prestamo = self
        movimiento.valor = cuota
        if self.motivo.empty?
          movimiento.texto = "Prestamo cuota de #{i+1}/#{self.cuotas}"
        else
          movimiento.texto = "#{self.motivo} - #{i+1}/#{self.cuotas}"
        end
        movimiento.fecha = self.fecha + (30 * i)
        movimiento.tipo_movimiento_id = APP_CONFIG[:prestamo_id]
        movimiento.save!
      end
    end
  end


  def calcular_cuota
    total_con_intereses / self.cuotas
  end

  def total_con_intereses
    self.total * (((self.tasa * self.cuotas) / 100)+1)
  end

  def saldo
     Movimiento.sum(:valor, :conditions => {:prestamo_id => self.id, :recibo_id => nil})
  end
end
